<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JS错误处理</title>
</head>
<body>
    <script>
        /**
         * 语法固定 try...catch   try 尝试的意思  catch 捕获
         * 1. try catch捕获到错误之后, 后续代码可以继续执行
         * 2. catch 可以将错误信息捕获到. e 是一个对象, 有message和stack两个属性
         * 3. 抛出错误之后, 在后续的 try 里面的代码不会执行
         * 4. try 不能捕获语法错误. 其他三种类型错误可以捕获.
         * 5. 允许使用 throw 手动的抛出错误
         * 6. 抛出任意类型的数据
         */
        try {
            //放置可能会出现错误的代码
            // let fn = {};
            // fn();// 这里会自动抛出 TypeError 实例对象
            //发生错误后, try 剩余代码不会执行
            // console.log(1111);
            //在 try 中允许用户手动抛出错误
            throw new Error('参数缺失!!');
            // throw 'abc';
        } catch(e) {
            //对错误进行处理
            //1. 在控制台输出错误
            console.dir(e);// 对象中有两个属性, message 为错误信息, stack 为发生错误的位置
            //2. 更好的显示
            // alert(e.message);
            //3. 记录错误
        }

        console.log('hello ');
        
    </script>
</body>
</html>